﻿namespace Snipps.Core
{
    using System;
    using System.Collections.Generic;

    using Snipps.Core.Entities;

    public interface ISnippetsDataContext : IDisposable
    {
        IList<Snippet> FilterSnippets(string snippetName, ProgrammingLang programmingLang = null, IList<Tag> tags = null);

        IList<Tag> FilterTags(string tagName, IList<Tag> excludedTags);

        IList<ProgrammingLang> FilterProgrammingLangs(string filterText);

        void SaveChanges();

        Snippet GetSnippet(string snippetName, ProgrammingLang programmingLang);

        Tag GetTag(string tagName);

        void RemoveTag(Tag tag);

        void RemoveSnippet(Snippet snippet);

        void SaveTag(Tag tag);

        void SaveSnippet(Snippet snippet);
    }
}